from django_redis import get_redis_connection


class CodeRedis:
    def __init__(self, name='code', timeout=60 * 5, ):
        self.timeout = timeout
        self.redis = get_redis_connection(name)

    def setCode(self, phone, code):
        self.redis.setex(phone, self.timeout, code)

    def getCodeInterval(self, phone):
        return self.redis.ttl(phone)

    def getCode(self, phone):
        code = self.redis.get(phone)
        if code:
            # 此刻注意：redis返回的bytes类型数据需要解码，不解码的会在值的前面添加b，如:b 2761,我们要的是2761
            return code.decode("utf-8")
        return None

    # 处理搜索热词记录方法
    def setWord(self, word):
        """
        使用Redis的有序集数据结构，增加指定单词的出现次数。
        参数:
        word (str): 需要记录的单词。
        返回:
        无
        """
        self.redis.zincrby('word', 1, word)

    def getWord(self):
        """
        从Redis的有序集中获取出现次数最多的前6个单词。
        返回:
        list: 出现次数最多的前6个单词的列表。
        """
        return self.redis.zrevrange('word', 0, 5)


codeRedis = CodeRedis()
